「提示工程系列」转译(1):思维链(CoT)提示-一种实用而简单的LLM“推理”方法
题图|Wei, Jason, et al[论文1]
▽
论述题记
大型语言模型(LLM)的成功,源于我们利用单解码器转换器模型(decoder-only transformer model),对大规模文本语料库预训练(使用语言建模目标)的能力。鉴于我们预先训练了足够大的模型,LLM 是非常有能力的少数样本学习者(few-shot learner)。换句话说,这意味着我们可以通过制定文本提示(可能包含一些正确输出的示例)并让LLM生成正确答案来解决各种不同的问题(例如,翻译,句子分类,摘要等)。
尽管LLM功能强大,但这些模型一直在努力解决的一些问题,特别是,推理问题(例如,算术或常识推理)是出了名的困难。作为解决这个问题的初步尝试,探索了LLM的微调(fine-tuning)和特定于任务的模块验证,基于有监督数据集解决方案和各种推理问题的解释[3,4]。然而,最近的研究发现,可以利用少样本学习(few-shot learning)来获得更简单的解决方案。
“The goal of this paper is to endow language models with the ability to generate a chain of thought—a coherent series of intermediate reasoning steps that lead to the final answer for a problem.” - from [1]
“本文的目标是赋予语言模型产生思维链的能力 - 一系列连贯的中间推理步骤,导致问题的最终答案。” - 摘自论文[1]
论述正文-核心概念
要理解思维链(CoT)提示,我们需要对LLM及其工作原理有一个基本的了解。幸运的是,我们在之前的概述中已经广泛讨论了这个主题:
语言模型简介 [link]
GPT-3 和语言模型性能扩张定律 [link]
现代大语言模型LLM [link]
专业 LLMs [link]
LLM的基础知识可以参考上述链接,就不在这里赘述了,相反,我们将专注于更好地理解LLM的提示和少样本学习(few-shot learning),并探索如何利用这些技术来解决这些模型的核心限制:LLM无法解决好推理任务。
▩提示和少样本学习
在提出GPT和GPT-2这样的语言模型之后,我们知道通过自我监督的下一个Token预测(或语言建模)目标进行预训练的方法非常强大。然而,如何正确调整这些通用基础模型以解决特定的下游任务的方法并不那么清楚。例如,GPT 在下游任务上微调模型,而 GPT-2 以零样本(zero-shot)方式解决问题;见下图。
在 GPT-3 [2] 提出之后,我们看到足够大规模的 LLM 可以很好地执行少样本学习。通过语言建模目标进行预训练后,发现GPT-3(1750亿参数LLM)无需任何微调即可准确解决各种不同的语言任务。我们可以改为用提示方法代替微调。
更具体地说,可以通过提供如下输入作为提示,来利用语言模型的文本到文本结构特征:
“将这句话翻译成英语: <sentence> => ”
“总结以下文件: <document> => ”
这些任务解决“提示”支持使用语言模型进行零样本(即没有看到正确输出的示例;见上文)或少样本(即在提示中插入一些正确输出的示例;见下图)推理。语言模型最合适的输出应该解决具体任务(例如,总结文档或完成推理任务),这意味着我们可以通过准确的下一个令牌预测来解决各种问题!
△
我们可以通过提示做很多事情。事实上,最新相当于创建了一个全新的提示工程领域,以研究如何优化提示的措辞或结构以提高LLM性能。但是,在这个发展中领域,“敏感性”(sensitivity)是一个巨大的考虑因素。输入提示很小的扰动,导致LLM性能可能会发生巨大变化(例如,排列少样本会使SST-2的GPT-3精度从93.4%降低到54.3%[13])。因此,在我们对提示方法的研究中,我们的目标是找到
ii)不受敏感性影响的技术。
▩我们能用规模解决推理问题吗?
如上所述,LLM少样本学习性能随着规模而提高,但大型模型并不是我们所需要的全部。强大的LLM需要将大型模型与大量的预训练数据集相结合[14]。考虑到这一点,我们可能会问自己:LLM在基于推理的数据集上的表现如何?随着我们扩大规模,LLM在推理方面会变得更好吗?
“Scaling up model size alone has not proved sufficient for achieving high performance on challenging tasks such as arithmetic, commonsense, and symbolic reasoning” - from [1]
“仅扩大模型大小不足以在算术、常识和符号推理等具有挑战性的任务上实现高性能” - 来自论文 [1]
有趣的是,我们倾向于看到使用更大的模型和预训练数据集并不能提高LLM推理能力(例如,参见Gopher [15]的分析)。事实上,这些模型因其无法解决基本的推理任务而受到严厉批评。因此,许多研究人员声称LLM只是在反刍训练数据,而不是执行任何复杂的推理或分析。无论哪种方式,本概述都将侧重于尝试解决此问题并使LLM能够更轻松地解决基本推理任务的提示技术。
先前的做法
在了解更多关于我们如何帮助LLM解决推理问题之前,了解该领域的先前做法是有用的。算术、常识和符号推理任务的基线技术执行针对特定任务的微调,这意味着模型是通过解决的每个推理问题的有监督示例进行训练的。更进一步,最好的方法训练一个补充的“验证”模块,可以判断LLM输出在推理任务上的正确性[4]。在测试时,此验证器可以在生成问题的多个答案后推断出最佳输出;见上图。
尽管这些技术在某些情况下可能效果相对较好,但由于以下几个原因,它们受到限制:
需要针对特定任务进行微调。
必须针对每项任务调整模型架构(即通过验证模型)。
必须收集大量有监督的数据。
考虑到这些限制,很明显,使用单提示方法(例如,CoT提示)来解决推理任务会简单得多。我们可以避免微调,保持相同的模型架构,收集更少的数据,并使用单个预训练的模型检查点解决许多任务。
▩一些著名的LLMs...
CoT 提示是一种提示技术,用于提高预训练 LLM 的少数镜头学习性能。在[1]中,一组特定的LLM用于评估,下面列出并解释。
GPT-3 [2]:具有1750 亿参数 LLM,使用标准语言建模目标预先训练。
LaMDA [5]:一种基于LLM的对话模型,使用语言建模目标进行预训练,然后根据对话数据和人工提供的反馈进行微调(按参数大小分为422M,2B,8B,68B和137B的模型)。
PaLM [6]:使用标准语言建模目标、Google 的 Pathways 框架和大量文本语料库(按参数大小分为 8B、62B 和 540B 的模型)进行预训练的 LLM。
Codex [7]:一个 120 亿参数的 LLM,使用标准语言建模目标进行预训练,然后在 GitHub 公开可用的 Python 代码上进行微调。
UL2-20B [8]:使用降噪器混合(MoD)目标进行预训练的LLM,这是一个统一的目标,在许多数据集和部署中表现良好。
除了这些LLM,我们还在最近的概述中了解了其他模型(例如LLaMA,LLaMA扩展和T5)。
论述正文-思维链提示(CoT Prompting)
虽然我们可能理解一般提示的概念,但什么是 CoT 提示?CoT只是指一种特定的提示技术,它将思维链(即一系列中间推理步骤)插入LLM的提示中;见上图。对于足够大的模型(>1000亿个参数),这种方法显著提高了LLM在算术,常识和符号推理任务上的复杂推理能力。
CoT 提示从何而来?|在提出CoT提示之前,我们已经意识到少样本学习对LLM来说非常强大;见下图。我们不是微调LLM来执行任务,而是在生成最终答案之前,用一些正确输出的示例“提示”一个通用模型。这种方法可以非常成功用于一系列任务上。
△
“截图自论文[2]-少样本提示的上下文学习示例”
此外,我们从相关工作中知道,生成解释如何得出最终答案的自然语言逻辑依据对算术推理任务是有益的。我们可以训练或微调模型来生成这些基本逻辑依据[3,4],但这需要为不同的推理任务创建一个高质量基本逻辑依据的数据集,这既昂贵又耗时!
“A prompting only approach is important because it does not require a large training dataset and a single model can perform many tasks without loss of generality.” - from [1]
“纯提示方法很重要,因为它不需要大型训练数据集,单个模型可以执行许多任务而不会失去通用性。”
CoT 提示结合了少样本提示的优势和生成自然语言基本原理的好处。与其进行额外的训练或微调,我们可以在提示中插入一些基本逻辑依据(即思维链)的例子,让LLM少样本学习产生类似的逻辑依据。
▩CoT 提示如何工作?
CoT提示类似人类,我们在解决推理任务时,通常会将问题分解为较小的任务。例如,在计算我想在餐厅给多少小费时,我通常会执行以下操作:
取账单总额:$56.00
计算总额的 10%:5.60 美元
或将此值乘以 2(产生 20% 的小费):11.20 美元
虽然这个例子很简单,但这个想法适用于我们作为人类解决的各种大脑推理任务。我们生成一个思维链(在[1]中定义为“一系列连贯的中间推理步骤,导致问题的最终答案”)来解决这些任务。简而言之,CoT提示增强了LLM产生类似思维链的能力。
“We explore the ability of language models to perform few-shot prompting for reasoning tasks, given a prompt that consists of triples: [input, chain of thought, output].” - from [1]
“我们探索语言模型为推理任务执行少镜头提示的能力,给定一个由三元组组成的提示:[输入,思维链,输出]。
下面显示了推理任务的解决方案示例,并结合了几个不同问题的思维链。
思维链学习|为了教LLM生成解决问题的逻辑步骤,我们可以在他们的提示中插入这些逻辑步骤的例子。然后,LLM可以利用他们的少样本学习能力在解决任何推理问题时产生类似的思维链。如下所示,提示通常包括几个思维链示例。
论文[1]的作者发现,这种提示方法导致LLM在解决问题时产生类似的思维链,这有助于推理能力增强,并具有几个显著的好处:
可解释性:LLM生成的思维链可用于更好地理解模型的最终答案。
适用性:CoT提示可用于人类可以通过语言解决的任何任务。
提示:任何LLM都不需要培训或微调。我们可以在提示符中插入一些 CoT 示例!
此外,LLM甚至可以通过生成具有更多步骤的思维链来为复杂的推理问题分配更多的计算资源。这模仿了我们作为人类通常会做的事情!
▩CoT提示是非常有益的
为了评估其对LLM解决推理问题的能力的影响,CoT提示在算术,常识和符号推理基准上进行了测试。评估使用几种不同的预训练LLM进行,包括GPT-3 [2],LaMDA [5],PaLM [6],Codex [7]和UL2 [8]。作为基线,[1] 中的作者使用 GPT-3 提出的标准、少样本提示。所有模型在评估过程中都使用贪婪解码(Greedy Decoding),但通过获取多个样本的多数票可以获得更好的结果[9]。
算术推理|算术推理任务由数学术语问题组成。这些问题对人类来说很容易解决,但众所周知,LLM很难解决这些问题。下面概述了 [1] 中使用的算术推理数据集。
对于CoT提示,一组八个少样本示例是手动编写的(没有广泛的提示工程),并用于除具有多项选择结构的AQuA之外的所有数据集。CoT提示在具有多个LLM的算术推理数据集上的实验结果如下所示。
从这些实验中,我们发现了CoT提示的一些显著特性。首先,CoT 提示似乎更适合较大的 LLM(即 >100B 参数)。发现较小的模型会产生不合逻辑的思维链,因此与标准提示相比会降低性能。此外,更复杂的问题(例如,GSM8K)从CoT提示中获得更大的好处。与先前最先进的方法(执行针对特定任务的微调)相比,使用 GPT-3 和 PaLM-540B 的 CoT 提示在所有情况下都能实现相当或改进的性能。
当我们定性检查CoT提示生成的正确和不正确答案时,我们会学到以下内容:
大多数正确答案都是逻辑思维链的结果,除了少数情况巧合地从错误的思维链中预测正确答案。
46%的错误答案几乎是正确的,这意味着它们包含带有小错误的思维链。
56%的错误答案是思维链的结果,在理解或推理方面存在重大问题。
论文[1] 中的作者还分析了 CoT 提示对不同结构的鲁棒性(例如,排列少数样本)并消融 CoT 提示的各个方面,发现 CoT 对模型性能产生了一致且独特的好处。有趣的是,CoT 提示对小的提示扰动不是很敏感。
常识推理|常识推理问题需要掌握一般背景知识,并需要对物理和人类互动进行推理。采用与算术推理实验类似的设置(除了一些需要人工策划少样本的数据集),作者评估了各种预先训练的LLM关于常识推理任务,产生了下图所示的结果。
简而言之,CoT提示被发现对常识推理问题也有很大的好处。同样,我们看到较大的模型从CoT提示中受益更多。但是,标准提示和 CoT 提示性能都随着模型规模的提高而提高,其中 CoT 提示往往会实现略微提高的性能。
符号推理|论文[1] 中的作者还评估了符号推理任务中的 CoT 提示,例如:
最后一个字母串联:要求模型连接并输出序列中每个单词的最后字母。
硬币翻转:要求模型确定在一系列抛硬币后硬币是否仍然朝上。
更进一步,考虑了域内和域外符号推理测试,其中域外示例被定义为那些需要更多推理步骤的示例(例如,最后一个字母串联中的更多单词或更长的抛硬币序列)比在训练期间或少样本提示中看到的示例。域内和域外评估的结果如下所示。
△
虽然这些任务很简单,但我们在上面看到,CoT思维链提示
ii)能够更好地泛化需要更多推理步骤的域外问题。
此外,我们再次观察到,无论有没有CoT提示,较小的模型都无法解决符号推理任务。因此,CoT提示再次表明在符号推理方面似乎也是一种非常有益的方法。
▩CoT 提示的变体
在[1]中提出CoT提示后,提出了几种可以提高LLM推理能力的变体。这些不同的变体为引出LLM中的“推理”行为提供了各种有趣和实用的方法。下面提供了值得注意的 CoT 提示变体列表。
零样本CoT|零样本 CoT 提示 [10] 是 CoT 提示 [1] 的简单后续。为了鼓励LLM产生一个思维链,零样本CoT只是在所问问题的末尾附加了“让我们一步一步地思考”这句话。通过对LLM的提示进行简单的补充,我们在[10]中看到LLM即使没有观察到任何这种行为的明确例子,也能够产生思维链,使他们能够在推理任务上得出更准确的答案。有关零镜头CoT与其他提示方法的比较,请参见上图。
△
“截图自论文[11]-CoT的自洽性”
自洽性|自洽是CoT提示的一种变体,它使用LLM生成多个思维链,然后将这些迭代的多数票作为最终答案;见上图。在 CoT 提示无效的情况下,使用自洽通常可以改善结果。简而言之,自洽只是用一个管道取代了[1]中使用的“贪婪解码”过程,该管道使用LLM生成多个答案并获取这些答案中最常见的答案。
最少到最提示|最小到最多的提示超越了 CoT 提示,首先将问题分解为较小的子问题,然后单独解决每个子问题。当每个子问题被解决时,其答案将包含在解决下一个子问题的提示中。与 CoT 提示相比,最小到最多提示提高了多个任务(例如,最后一个字母串联)的准确性,并改进了对需要更多推理步骤的域外问题的泛化。
提示工程|正如上面的例子(以及一般的CoT提示的想法)所证明的那样,为LLM策划一个有用的提示是一门艺术。要了解有关如何设计更有效的提示的更多信息,我强烈建议学习下面链接的 Learn Prompting网站上提供的课程。
Learn Prompting
论述正文-要点(takeaways)
在此概述中,我们已经看到标准提示不足以充分挖掘LLM潜力;相反,它似乎为LLM性能提供了一种“下限”,特别是在更困难的,基于推理的任务上。CoT提示则超越了标准的提示技术,利用LLM的少样本学习功能来引发连贯的多步骤推理过程的生成,同时解决基于推理的问题。这种方法对LLM性能非常有益,特别是对于较大的模型。下面提供了一些要点。
CoT 提示的效用|LLM不擅长处理常识,算术和符号推理等任务。但是,CoT 提示可显著提高这些任务的性能。此外,这种方法需要
因此,这是一种易于使用的技术,在快速工程和策划一些示例方面付出一些努力,可以帮助预先训练的LLM解决他们通常难以解决的任务。
推理随着规模而出现|并非所有模型都受益于 CoT 提示。事实上,与较小的模型相比,较大的LLM从CoT提示中看到不成比例的好处。在[1]中,作者观察到CoT提示的好处出现在具有>1000亿个参数的模型中。这个确切的数字可能在很大程度上取决于实验设置,但总体思路很明确:CoT提示的好处在较大的模型中最为明显。
“Chain of thought emulates the thought processes of human reasoners. This does not answer whether the neural network is actually reasoning.” - from [1]
“思维链模仿人类推理者的思维过程。这并不能回答神经网络是否真的在推理。
LLM真的知道如何推理吗?|CoT提示帮助LLM解决某些推理任务,但这并不一定意味着LLM具有复杂的推理能力。[1]中的作者甚至特别指出,对CoT提示的分析并不能回答LLM是否真的在推理。相反,CoT提示是一种经验技术,可用于更准确地解决算术,常识和符号推理等任务,这些任务通常对LLM来说是有问题的。
无论我们是否相信LLM能够推理,我们都可以同意这种技术在与LLM交互过程中实际上是有用的。
附录:Bibliography
参考
-CAMERON R. WOLFE:Chain of Thought Prompting for LLMs
END
扫码加群,
立变AI🍚!
AI范儿读者群
那些prompt了我的,
是否也prompt了你...